package 力扣;

import java.util.Arrays;

//给定一个 n × n 的二维矩阵表示一个图像。
//将图像顺时针旋转 90 度。
public class 旋转图像 {
    public static void main(String[] args) {
        int[][] matrix={{1,2,3},
                        {4,5,6},
                        {7,8,9}};
        rotate(matrix);
        for (int i = 0; i < matrix.length; i++) {
            System.out.println(Arrays.toString(matrix[i]));
        }
    }
    //可以想到的做法
    //int len = matrix.length;
    //int[][] help = new int[len][len];
    //        for(int i = 0; i < len; i++){
    //            for(int j = 0; j < len; j++){
    //                help[j][len - i - 1] = matrix[i][j];
    //            }
    //        }


    //思路：先对角线反转，然后左右反转
    public static  void rotate(int[][] matrix) {
        // 临时变量
        int temp = 0;
        // 对矩阵做对角交换
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix.length; j++) {
                if (j >= i) {
                    continue;
                }
                temp = matrix[j][i];
                matrix[j][i] = matrix[i][j];
                matrix[i][j] = temp;
            }
        }
        // 沿中轴左右交换
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix.length; j++) {
                if (j >= matrix.length / 2) {
                    continue;
                }
                temp = matrix[i][matrix.length - 1 - j];
                matrix[i][matrix.length - 1 - j] = matrix[i][j];
                matrix[i][j] = temp;
            }
        }
    }
}
